# 列表和元组：元组和列表相比, 是非常相似的, 只是列表中放哪些元素可以修改调整, 元组中放的元素是创建元组的时候就设定好的, 不能修改调整

# 创建列表两种方式
# a = []
# a= list()
#如果需要往里面设置初始值, 可以直接写在 [ ] 当中
# alist = [1, 2, 3, 4]
# print(alist)
# 列表中存放的元素允许是不同的类型
# alist = [1, 'hello', True]
# print(alist)
# 访问下标（下标访问运算符[]）
# alist = [1, 2, 3, 4]
# # print(alist[2])
# 通过下标修改元素
# alist = [1, 2, 3, 4]
# alist[2] = 100
# print(alist)
# print(len(alist))  # 列表元素长度

# 切片操作：通过切片, 则是一次取出一组连续的元素, 相当于得到一个子列表，使用 [ : ] 的方式进行切片操作.
# a=[1,2,3,4,5,6]
# print(a[1:3])  #  前闭后开
# 切片操作中可以省略前后边界
# alist = [1, 2, 3, 4]
# print(alist[1:])        # 省略后边界, 表示获取到列表末尾
# print(alist[:-1])       # 省略前边界, 表示从列表开头获取
# print(alist[:])         # 省略两个边界, 表示获取到整个列表.

# 带有步长的切片
# alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# print(alist[::1])
# print(alist[::2])
# print(alist[::3])
# print(alist[::5])
# 步长为负数表示从后向前取
# print(alist[::-1])

# 列表元素遍历（一个列表的元素依次取出来）
#使用for循环遍历
# alist = [1, 2, 3, 4]
# for elem in alist:
#     print(elem)
# 也可以使用 for 按照范围生成下标, 按下标访问
# alist = [1, 2, 3, 4]
# for i in range(0, len(alist)):
#     print(alist[i])
# while遍历
# alist = [1, 2, 3, 4]
# i = 0
# while i < len(alist):
#     print(alist[i])
#     i += 1

# 列表插入：使用 append 方法, 向列表末尾插入一个元素(尾插)
# alist = [1, 2, 3, 4]
# alist.append('hello')
# print(alist)
#  insert向任意位置插入
# alist = [1, 2, 3, 4]
# alist.insert(1, 'hello')
# print(alist)

# 查找元素：使用 in 操作符, 判定元素是否在列表中存在. 返回值是布尔类型
# alist = [1, 2, 3, 4]
# print(2 in alist)
# print(1 not in alist)
# print(10 in alist)
# 使用 index 方法, 查找元素在列表中的下标. 返回值是一个整数. 如果元素不存在, 则会抛出异常.
# alist = [1, 2, 3, 4]
# print(alist.index(2))
# print(alist.index(10))

# 删除元素：使用 pop 方法删除最末尾元素
# alist = [1, 2, 3, 4]
# alist.pop()
# print(alist)
# pop删除指定位置元素
# alist = [1, 2, 3, 4]
# alist.pop(2)
# print(alist)
# remove删除指定值
# alist = [1, 2, 3, 4]
# alist.remove(2)
# print(alist)

# 连接列表
# alist = [1, 2, 3, 4]
# blist = [5, 6, 7]
# print(alist + blist)
# a.extend(b)是把 b 中的内容拼接到 a 的末尾. 不会修改 b, 但是会修改 a.
# alist = [1, 2, 3, 4]
# blist = [5, 6, 7]
# alist.extend(blist)
# print(alist)
# print(blist)
